perm filename SAY.SAI[8,ALS]1 blob sn#035870 filedate 1973-04-18 generic text, type T, neo UTF8
00100	COMMENT ⊗   VALID 00002 PAGES 
00200	RECORD PAGE   DESCRIPTION
00300	 00001 00001
00400	 00002 00002	BEGIN "SAY"
00500	 00007 ENDMK
00600	⊗;
     

00100	BEGIN "SAY"
00200	DEFINE ⊂="COMMENT";  ⊂ 6/30/72 Runs SIG from FIX output;
00300	REQUIRE "COMSUB.HDR[SYS,ALS]" SOURCE_FILE;
00400	REQUIRE "SIG3[8,ALS]" LOAD_MODULE;
00500		REQUIRE "BLOCKS.HDR[SYS,THO]" SOURCE_FILE;
00600	EXTERNAL FORTRAN PROCEDURE SIG(REFERENCE INTEGER P);
00700	INTEGER ARRAY LFILE[0:'177];
00800	INTERNAL INTEGER ARRAY INDATA[0:768];
00900	INTERNAL INTEGER H,I,J,K,L,M,N,P,NF;
01000	INTERNAL INTEGER FLAG,TFLAG,UPCNT;
01100	INTERNAL INTEGER SEGC,INTOT,SEGTOT,HINT,BPT,INFLAG;
01200	INTEGER HINCNT,HCOUNT,HINDEX,EOF,EOFA,BRK;
01300	STRING PREHINT;
01400	INTEGER CHAN1,CHAN2,CHAN3,CHAN4,CHAN5;
01500	STRING READ1,FILEL,FILEI,TFILE,TFILEI,FILLST;
01600	LABEL START,ZZZZ,ZZZ,ZZ;
01700	DEFINE ⊂="COMMENT",CR="'15",LF="'12",TB="'11";
01800	DEFINE CRLF="CR&LF", CRLF0="CR&'177&'21"; ⊂ FOR CRLF W/O FORM FEED;
01900	BOOLEAN ER;
02000	
02010	INTEGER EOFB,RL;
02020	INTERNAL INTEGER STX,STXX;
02030	STRING FILSTR,SNAMES,SNAME;
02100	
02200	STRING PROCEDURE HEADER;
02300	  BEGIN "HEADER"
02400	  STRING H1,H2; INTEGER I,J,K;
02500	  IF HCOUNT>0 THEN BEGIN HCOUNT←HCOUNT-1; HINCNT←HINCNT+1; RETURN(PREHINT) END 
02600	  ELSE WHILE HCOUNT=0 DO BEGIN "XX"
02700	  I←LFILE[HINDEX];  K←LDB(POINT(7,I,30)); J←SEGC-K; 
02800	  IF I=0 THEN BEGIN PREHINT←"NU"; HCOUNT←99; RETURN(PREHINT) END;
02900	  IF J ≥ 0 THEN BEGIN "LATCH"   H1←CVXSTR(LDB(POINT(12,I,11)) LSH 24);
03000	   H2←CVXSTR(LDB(POINT(12,I,23)) LSH 24);
03100	   IF EQU(H1,H2) THEN BEGIN PREHINT←H1; HCOUNT←LDB(POINT(5,I,35));
03200	    HCOUNT←HCOUNT-J; HINDEX←HINDEX+1; HINCNT←HINCNT+1; RETURN(PREHINT); DONE  END
03300	    ELSE BEGIN PREHINT←"NU"; HCOUNT←LDB(POINT(5,I,35));
03400	    HCOUNT←HCOUNT-J; HINDEX←HINDEX+1; RETURN(PREHINT); DONE; END;
03500	  END "LATCH";
03600	 PREHINT←"NU"; RETURN(PREHINT); END "XX";
03700	END "HEADER";
03800	STDBRK(1);
03900	SETBREAK(14,"∃",NULL,"INS");
04000	
04100	FILEL←"LIST1.L0";
04200	FILEI←"TOO1.DAT[1,THO]"; M←8; INFLAG←0;
04300	CHAN1←1; CHAN2←2; CHAN3←3;  CHAN4←4; CHAN5←5;
04400	TABIN(INTOT);
04500	
04510	FILSTR←STRIN("Ripple learn break-point list (STFILE.TMP) =");
04520	IF FILSTR="" THEN FILSTR←"STFILE.TMP";
04530	CLOSE(CHAN5); OPEN(CHAN5,"DSK",1,2,0,3500,BRK,EOFB);
04540	LOOKUP(CHAN5,FILSTR,ER);
04550	WHILE ER DO BEGIN OUTSTR(CRLF&"Can not find "&FILSTR&
04560	     " File = ");
04570	  LOOKUP(CHAN5,FILSTR←INCHWL,ER); END;
04580	SNAMES←INPUT(CHAN5,14);
04590	SNAME←SCAN(SNAMES,1,J);
04592	FOR I←19 STEP 1 UNTIL 125 DO BEGIN
04594	  IF LIST[I]=CVSIX(SNAME) THEN DONE;
04596	END;
04597	OUTSTR("I="&CVS(I)&" SNAME="&CVXSTR(LIST[I])&CRLF);
04598	STX←I*74; EOFB←0;
04599	
04600	FILEL←STRIN("Data file list (LNFILE.TMP) = ");
04602	IF FILEL="" THEN FILEL←"LNFILE.TMP";
04625	START:
04650	WHILE EOFB=0 DO BEGIN "RIPPLE"
04660	IF SNAME="END" THEN DONE;
04700	CLOSE(CHAN5); OPEN(CHAN5,"DSK",1,2,0,3500,BRK,EOFA);
04800	LOOKUP(CHAN5,FILEL,ER); WHILE ER DO BEGIN OUTSTR(CRLF&"Can't find "&FILEL&
04900	" File = "); LOOKUP(CHAN5,FILEL←INCHWL,ER); END;  EOFA←0;
05000	 M←8; N←2↑M;  NF←2*N;
05100	
05200	FILLST←INPUT(CHAN5,14); EOFA←0;
05300	
05415	OUTSTR(CRLF&"Ripple learn starting with "&SNAME&" up to ");
05420	STXX←STX; SNAME←SCAN(SNAMES,1,J);
05425	OUTSTR(SNAME&CRLF);
05430	IF SNAME="" THEN DONE;
05450	  FOR I←19 STEP 1 UNTIL 125 DO BEGIN
05460	    IF LIST[I]=CVSIX(SNAME) THEN DONE; END;
05462	STX←I*74;
05465	OUTSTR("I="&CVS(I)&" SNAME="&CVXSTR(LIST[I])&CRLF);
05467	RL←0;
05480	
05490	
05500	WHILE EOFA=0 DO BEGIN "LISTREAD"
05600	HINDEX←21; HCOUNT←HINCNT←0;
05700	FILEI←SCAN(FILLST,1,J);
05800	IF FILEI="" THEN DONE;
05900	
06000		CLOSE(CHAN4);
06100	OPEN(CHAN4,"DSK",'10,10,0,0,0,EOF);
06200	LOOKUP(CHAN4,FILEI,0);
06300	IF EOF≠0 THEN DONE;
06400	ARRYIN(CHAN4,LFILE[0],'200);	⊂ Input header;
06500	SEGTOT←(LFILE[0]*6)%N;
06600	OUTSTR(FILEI&" "&CVS(SEGTOT)&" seg. ");
06700	ARRYIN(CHAN4,INDATA[0],SEGTOT*4);
06800	CLOSE(CHAN4);
06900	BPT←POINT(6,INDATA[0],-1);
07000	ZZ:	HINDEX←21; HCOUNT←HINCNT←0;
07100	
07200	FOR SEGC←1 STEP 1 UNTIL SEGTOT DO BEGIN
07300	  READ1←HEADER;
07400	  J←CVSIX(READ1);
07500	  FOR I←0 STEP 1 UNTIL 63 DO BEGIN   IF PHLIST[I]=0 THEN BEGIN
07600	    OUTSTR("Hint not identified for segment = "&READ1&"   " &CVS(SEGC)&CRLF);DONE END;
07700	    IF PHLIST[I]=J THEN BEGIN HINT←H←I;TABLES[2]←HLIST[I] ; DONE ; END;
07800	END;
07900	
08000	FOR P←0 STEP 1 UNTIL 23 DO  INDAT[P]←ILDB(BPT);
08100	ZZZZ:  SIG(P);
08200	ZZZ:	END;
08300	
08400	OUTSTR(CVS(HINCNT)&" hints . ");
08450	IF RL=0 THEN RL←1 ELSE BEGIN RL←0; OUTSTR(CRLF); END;
08500	IF EOFA≠0 THEN DONE;
08600	END "LISTREAD";
08700	TABOUT;
08800	OUTSTR("Tables saved"&CRLF);
08810	
08820	END "RIPPLE";
08900	
09000	END "SAY";